package com.gengzp.rpc.core;

import com.gengzp.rpc.model.requestIdentification.RpcRequestIdentification;

/**
 * @ClassName RpcRequestIdentificationCoreFunc
 * @Description rpc框架请求标识核心方法接口
 * @Author gengzp
 * @Date 2025/8/22 16:22
 */
public interface RpcRequestIdentificationCoreFunc {

    /**
     * 保存当前请求唯一标识
     *
     * @param requestId 要保存的requestId
     */
    void saveRequestId(String requestId);

    /**
     * 保存当前请求是否是初始请求标识
     *
     * @param initialRequestFlag 初始请求标识
     */
    void saveInitialRequestFlag(Boolean initialRequestFlag);

    /**
     * 保存是否开启远程事务标识
     *
     * @param enableRemoteTransactionFlag 开启远程事务标识
     */
    void saveEnableRemoteTransactionFlag(Boolean enableRemoteTransactionFlag);

    /**
     * 获取当前请求标识信息
     *
     * @return 当前请求标识信息
     */
    RpcRequestIdentification getCurrentRequestIdentification();

    /**
     * 清除请求标识信息线程变量上下文
     */
    void clearCurrentRequestIdentification();

}
